package pkg

import (
	"fmt"
	"time"
)

func ParseUTCToDatetime(timeStr string) string {
	// 解析时间，格式要包括时区偏移
	layout := "2006-01-02T15:04:05.999999999-07:00"
	t, err := time.Parse(layout, timeStr)
	if err != nil {
		return ""
	}

	// 格式化时间为标准格式
	standardTime := t.Format("2006-01-02 15:04:05")
	return standardTime
}

// 格式化时间为：刚刚、几分钟前、几小时前、超过24小时显示具体日期
func FormatTime(inputTime string, en bool) (string, error) {
	// 解析输入的时间字符串
	layout := "2006-01-02 15:04:05"
	t, err := time.ParseInLocation(layout, inputTime, time.Local)
	if err != nil {
		return "", err
	}

	// 获取当前时间
	now := time.Now()
	// 计算时间差
	diff := now.Sub(t)

	var msgMap = map[string]map[string]string{
		"zh": {
			"sec":  "刚刚",
			"min":  "分钟前",
			"hour": "小时前",
		},
		"en": {
			"sec":  "just",
			"min":  "minutes ago",
			"hour": "hours ago",
		},
	}

	lang := "zh"
	if en {
		lang = "en"
	}
	// 判断时间差并返回相应的格式
	if diff < time.Minute {
		return msgMap[lang]["sec"], nil
	} else if diff < time.Hour {
		// 小于一小时，显示几分钟前
		minutes := int(diff.Minutes())
		return fmt.Sprintf("%d "+msgMap[lang]["min"], minutes), nil
	} else if diff < 24*time.Hour {
		// 小于24小时，显示几小时前
		hours := int(diff.Hours())
		return fmt.Sprintf("%d "+msgMap[lang]["hour"], hours), nil
	} else {
		// 超过24小时，显示具体日期
		return t.Format("2006-01-02"), nil
	}
}
